package com.ruoyi.hxqProject.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.procategory.domain.ProCategory;
import com.ruoyi.procategory.mapper.ProCategoryMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.hxqProject.mapper.HxqProjectMapper;
import com.ruoyi.hxqProject.domain.HxqProject;
import com.ruoyi.hxqProject.service.IHxqProjectService;

/**
 * 项目管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-02-18
 */
@Slf4j
@Service
public class HxqProjectServiceImpl implements IHxqProjectService 
{
    @Autowired
    private HxqProjectMapper hxqProjectMapper;

    @Autowired
    public ProCategoryMapper proCategoryMapper;

    /**
     * 查询项目管理
     * 
     * @param id 项目管理主键
     * @return 项目管理
     */
    @Override
    public HxqProject selectHxqProjectById(Long id)
    {
        HxqProject hxqProject = hxqProjectMapper.selectHxqProjectById(id);

        hxqProject.setCategoryName(proCategoryMapper.selectProCategoryById(hxqProject.getCategoryId()).getName());
        return hxqProject;
    }

    /**
     * 查询项目管理列表
     * 
     * @param hxqProject 项目管理
     * @return 项目管理
     */
   @Override
public List<HxqProject> selectHxqProjectList(HxqProject hxqProject) {
    List<HxqProject> hxqProjects = hxqProjectMapper.selectHxqProjectList(hxqProject);

    hxqProjects.forEach(hxqProject1 -> {
        Long categoryId = hxqProject1.getCategoryId();

        if (categoryId != null) {
            ProCategory proCategory = proCategoryMapper.selectProCategoryById(categoryId);

            if (proCategory != null) {
                hxqProject1.setCategoryName(proCategory.getName());
            } else {
                // 处理 proCategory 为 null 的情况，例如设置默认值或记录日志
                log.warn("ProCategory with ID {} not found", categoryId);
                hxqProject1.setCategoryName("未知分类"); // 或者其他默认值
            }
        } else {
            // 处理 categoryId 为 null 的情况，例如设置默认值或记录日志
            log.warn("categoryId is null for HxqProject with ID {}", hxqProject1.getId());
            hxqProject1.setCategoryName("未知分类"); // 或者其他默认值
        }
    });

    return hxqProjects;
}


    /**
     * 新增项目管理
     * 
     * @param hxqProject 项目管理
     * @return 结果
     */
    @Override
    public int insertHxqProject(HxqProject hxqProject)
    {
        hxqProject.setCreateTime(DateUtils.getNowDate());
        return hxqProjectMapper.insertHxqProject(hxqProject);
    }

    /**
     * 修改项目管理
     * 
     * @param hxqProject 项目管理
     * @return 结果
     */
    @Override
    public int updateHxqProject(HxqProject hxqProject)
    {
        return hxqProjectMapper.updateHxqProject(hxqProject);
    }

    /**
     * 批量删除项目管理
     * 
     * @param ids 需要删除的项目管理主键
     * @return 结果
     */
    @Override
    public int deleteHxqProjectByIds(Long[] ids)
    {
        return hxqProjectMapper.deleteHxqProjectByIds(ids);
    }

    /**
     * 删除项目管理信息
     * 
     * @param id 项目管理主键
     * @return 结果
     */
    @Override
    public int deleteHxqProjectById(Long id)
    {
        return hxqProjectMapper.deleteHxqProjectById(id);
    }
}
